package com.huahua.api.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 导出格式枚举
 *
 * @author Huahua-Ai
 * @date 2025-07-13 21:55:00
 * @description 定义支持的导出格式类型
 */
@Getter
@AllArgsConstructor
public enum ExportFormat {

    /**
     * JSON格式
     */
    JSON("json", "application/json", ".json"),

    /**
     * CSV格式
     */
    CSV("csv", "text/csv", ".csv"),

    /**
     * HTML格式（可选扩展）
     */
    HTML("html", "text/html", ".html"),

    /**
     * PDF格式（可选扩展）
     */
    PDF("pdf", "application/pdf", ".pdf"),

    /**
     * Excel格式（可选扩展）
     */
    EXCEL("excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", ".xlsx");

    /**
     * 格式标识
     */
    private final String format;

    /**
     * MIME类型
     */
    private final String mimeType;

    /**
     * 文件扩展名
     */
    private final String extension;

    /**
     * 根据格式字符串获取枚举
     *
     * @param format 格式字符串
     * @return 导出格式枚举
     */
    public static ExportFormat fromString(String format) {
        if (format == null) {
            return null;
        }

        String lowerFormat = format.toLowerCase();
        for (ExportFormat exportFormat : values()) {
            if (exportFormat.format.equals(lowerFormat)) {
                return exportFormat;
            }
        }

        throw new IllegalArgumentException("不支持的导出格式: " + format);
    }

    /**
     * 判断是否为文本格式
     *
     * @return 是否文本格式
     */
    public boolean isTextFormat() {
        return this == JSON || this == CSV || this == HTML;
    }

    /**
     * 判断是否为二进制格式
     *
     * @return 是否二进制格式
     */
    public boolean isBinaryFormat() {
        return this == PDF || this == EXCEL;
    }
}
